/***********************************************************************************
 * 文件名： mcu_rfc.h
 * 版本： 1
 * 说明：
 * 		NY8 的RFC外设驱动。类似触摸按键外设，检测RC电路的充电时间。
 *      也可以理解为定时器1的输入捕获功能，仅支持上升沿捕获。
 *      先设置通道（即用于捕获的管脚）。首先设置管脚输出 0（低于VIL），接着设置定时器1初始后
 *  将管脚设置为输入引脚，定时器1会开始下数。这时RC电路开始对管脚引脚充电。当管脚电压变为高电
 *  平（高于VIH）时，定时器1会停止计数。 定时器1相当于记录RC电路充电时间。
 * 修改记录：
 * 	2022/04/14: 初版。 刘言。
***********************************************************************************/
#ifndef _MCU_RFC_H_
#define _MCU_RFC_H_

#include "mcu.h"

// RFC 通道定义

#define RFC_CH_PA0     0
#define RFC_CH_PA1     1
#define RFC_CH_PA2     2
#define RFC_CH_PA3     3
#define RFC_CH_PA4     4
#define RFC_CH_PA5     5
#define RFC_CH_PA6     6
#define RFC_CH_PA7     7
#define RFC_CH_PB0     8
#define RFC_CH_PB1     9
#define RFC_CH_PB2     10
#define RFC_CH_PB3     11
#define RFC_CH_PB4     12
#define RFC_CH_PB5     13


// 使能RFC且设置为配置的初始通道。
#define Rfc_Init()  \
{   \
    RFC = (RFC_CH << 0)    \
        |(RFC_EN << 7); \
}

// 设置通道，同时会使能RFC
// 设置通道后执行以下步骤：
// 1、设置通道对应管脚输出0（或其它方式使其为低电平）；
// 2、设置定时器1初始值（Tim1_SetValue）;
// 3、设置通道管脚输入模式，此时定时器1自动启动；
// 4、等待管脚为高电平（或管脚中断），此时定时器1自动停止；
// 5、读取定时器1（Tim1_GetValue）计算捕获值。
#define Rfc_SetCH(u8_ch) \
{ \
    RFC = (u8_ch << 0)    \
        |(1 << 7); \
}

#define Rfc_GetCH()     (RFC&0x0F)

#define Rfc_Enable()    RFCEN = 1

#define Rfc_Disable()   RFCEN = 0


#endif
